#ifndef USINGDIRECTIVES_H_
#define USINGDIRECTIVES_H_

#include "../syntax_tree.h"
#include "../main_container.h"
#include "SemanticNode.h"

#include <string>
#include <sstream>
#include <map>
#include <vector>


extern MainContainer *CompilerData;


class UsingDirectives : public SemanticNode {
private:
	/** lista using naredbi bez aliasa */
	std::vector<std::string> usingWithoutAlias;

	/** mapa using narebi s aliasima - key je alias, a value using naredba */
	std::map<std::string, std::string> usingWithAlias;

	friend std::string flattenNamePeriodAdd(const SyntaxTreeNode& nameNode);

protected:

public:

	UsingDirectives(SyntaxTreeNode* syntaxNode, SemanticNode* parent);
	virtual ~UsingDirectives();
	/**
	 *  @fn	virtual std::string toDebugString(int tab)
	 * 
	 *  @brief	Converts a tab to a debug string. 
	 * 
	 *  @author	Nikola Novak
	 *  @date	6/1/2009
	 * 
	 *  @param	tab	broj početnih uvlaka.
	 * 
	 *  @return	This object as a std::string.
	 */
	virtual std::string toDebugString(int tab);
};

#endif /* USINGDIRECTIVES_H_ */
